草庐IT

c++ 除以 0

全部标签

Java 除以零不会引发 ArithmeticException - 为什么?

为什么这段代码不抛出ArithmeticException?看看:publicclassNewClass{publicstaticvoidmain(String[]args){//TODOcodeapplicationlogicheredoubletab[]={1.2,3.4,0.0,5.6};try{for(inti=0;i我不知道! 最佳答案 IEEE754将1.0/0.0定义为Infinity,将-1.0/0.0定义为-Infinity,将0.0/0.0定义为NaN。顺便说一下,浮点值也有-0.0,所以1.0/-0.0就是-I

java - 为什么Java除以0.0时不抛出异常?

我有代码来计算两个数字之间的百分比差异-(oldNum-newNum)/oldNum*100;-其中两个数字都是doubles。我希望在oldNum为0的情况下必须添加某种检查/异常处理。但是,当我对oldNum和newNum的值都为0.0进行测试运行时,执行继续进行,就好像什么都没发生并且没有引发错误一样。使用ints运行此代码肯定会导致算术除零异常。为什么Java在涉及到doubles时会忽略它? 最佳答案 Java的float和double类型,与几乎所有其他语言(以及几乎所有硬件FP单元)一样,实现了IEEE754float

mongodb - 如何在 MongoDB 聚合框架中处理除以零

我有一组可以被赞成或反对的项目。{"_id":1,"name":"foo","upvotes":30,"downvotes":10}{"_id":2,"name":"bar","upvotes":20,"downvotes":0}{"_id":3,"name":"baz","upvotes":0,"downvotes":0}我想使用聚合来计算质量db.items.aggregate([{"$project":{"name":"$name","upvotes":"$upvotes""downvotes":"$downvotes","quality":{"$divide":["$upvot

c++ - 在常量表达式中除以零

如果我在常量表达式中除以零,我的玩具编译器会崩溃:intx=1/0;C和/或C++标准是否允许这种行为? 最佳答案 是的,除以零是未定义的行为,在这种情况下,C和C++标准都没有强加任何要求。虽然在这种情况下,我认为您至少应该发出诊断信息(见下文)。在我引用标准之前,我应该注意虽然这可能是符合行为的行为实现质量是一个不同的问题,但仅仅符合并不等于有用。据我所知,gcc、clang、VisualStudio和Intel(根据tpg2114)团队认为内部编译器错误(ICEs)是应该报告的错误。应该注意的是,当前的gcc和clang都会针

c++ - 为什么会发出如此复杂的代码来将有符号整数除以 2 的幂?

当我用VC++10编译这段代码时:DWORDran=rand();returnran/4096;我得到了这个反汇编:299:{300:DWORDran=rand();00403940calldwordptr[__imp__rand(4050C0h)]301:returnran/4096;00403946shreax,0Ch302:}00403949ret简洁明了,用逻辑右移代替了除以2的幂。当我编译这段代码时:intran=rand();returnran/4096;我得到了这个反汇编:299:{300:intran=rand();00403940calldwordptr[__imp_

c++ - 浮点除以零的行为

考虑#includeintmain(){doublea=1.0/0;doubleb=-1.0/0;doublec=0.0/0;std::cout我一直以为a会是+Inf,b会是-Inf,c会是NaN。但是我也听说过严格来说浮点除以零的行为是undefined,因此上面的代码不能被认为是可移植的C++。(理论上这会抹杀我的百万行代码堆栈的完整性。哎呀。)谁是正确的?请注意,我对定义的实现很满意,但我在这里谈论的是吃猫、打喷嚏未定义的行为。 最佳答案 C++标准不强制采用IEEE754标准,因为这主要取决于硬件架构。如果硬件/编译器正确

c++ - 将两个整数相除以产生浮点结果

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whycan'tIreturnadoublefromtwointsbeingdivided即使我尝试将输出放入float中,我的C++程序也会截断整数除法的输出。如何在将变量(a&b)保持为整数的同时防止这种情况发生?user@box:~/c/precision$catprecision.cpp#include#includeusingnamespacestd;intmain(){inta=10,b=3;floatans=(a/b);cout 最佳答案 将

c++ - 未评估的除以 0 是未定义的行为吗?

我与一些同事对以下代码存在分歧:intfoo(inta,intb){returnb>0?a/b:a;}此代码是否表现出未定义的行为?编辑:分歧始于过度渴望优化编译器中的一个错误,其中b>0检查已被优化。 最佳答案 没有。引自N4140:§5.16[expr.cond]/1Conditionalexpressionsgroupright-to-left.Thefirstexpressioniscontextuallyconvertedtobool.Itisevaluatedandifitistrue,theresultofthecon

python - 如何将列表中的每个元素除以 int?

我只想将列表中的每个元素除以一个整数。myList=[10,20,30,40,50,60,70,80,90]myInt=10newList=myList/myInt这是错误:TypeError:unsupportedoperandtype(s)for/:'list'and'int'我了解我收到此错误的原因。但我很沮丧,我找不到解决方案。也试过了:newList=[a/bfora,bin(myList,myInt)]错误:ValueError:toomanyvaluestounpack预期结果:newList=[1,2,3,4,5,6,7,8,9]编辑:以下代码给出了我的预期结果:new

c++ - 如果我想将一个无符号整数四舍五入为最接近的更小或相等的偶数,我可以除以 2 然后乘以 2 吗?

例如:f(8)=8f(9)=8我可以做x=x/2*2;吗?编译器会优化掉这样的表达式吗? 最佳答案 只要不给程序带来任何副作用,编译器就可以进行任何它喜欢的优化。在您的情况下,它不能取消'2',因为表达式对于奇数会有不同的值。x/2*2被严格评估为(x/2)*2,和x/2如果x则以整数算术执行是整数类型。事实上,这是一种惯用的舍入技术。 关于c++-如果我想将一个无符号整数四舍五入为最接近的更小或相等的偶数,我可以除以2然后乘以2吗?,我们在StackOverflow上找到一个类似的问题